package jwcb.hire.common.security.utils;

import jakarta.servlet.http.HttpServletRequest;
import jwcb.hire.common.core.utils.ServletUtil;
import jwcb.hire.common.domain.constants.SecurityConstants;
import jwcb.hire.common.domain.constants.TokenConstants;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.server.reactive.ServerHttpRequest;

/**
 * 安全工具类
 */
public class SecurityUtil {

    /**
     * 获取请求token
     * @return token信息
     */
    public static String getToken() {
       return getToken(ServletUtil.getRequest());
    }

    /**
     * 从请求头中获取token
     * @param request 请求信息
     * @return token
     */
    public static String getToken(HttpServletRequest request) {
        return replaceTokenPrefix(request.getHeader(SecurityConstants.AUTHENTICATION));
    }


    /**
     * 从请求头中获取token
     * @param request 请求信息
     * @return token
     */
    public static String getToken(ServerHttpRequest request) {
        return replaceTokenPrefix(request.getHeaders().getFirst(SecurityConstants.AUTHENTICATION));
    }

    /**
     * 裁剪token前缀
     * @param token 令牌
     * @return 裁剪后的token
     */
    public static String replaceTokenPrefix(String token) {
        if(StringUtils.isNoneBlank(token) && token.startsWith(TokenConstants.PREFIX)){
            token.replaceFirst(TokenConstants.PREFIX,"");
        }
        return token;
    }
}
